package cn.layfolk.daimao.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

@Configuration
public class TokenConfig {

    /**
     * 配置token存储方式
     * InMemoryTokenStore 单一服务器内存
     * JdbcTokenStore 不同服务器共享
     * JwtTokenStore 转换令牌值(相当于数据)，后端不需要存储，撤销令牌很困难，一般用来做刷新令牌或生命周期短
     */
//    @Bean
//    public TokenStore tokenStore() {
//        //JdbcTokenStore  JwtTokenStore  使用内存存储令牌（普通令牌）
//        return new InMemoryTokenStore();
//    }

    private String SIGNING_KEY = "Daimao";

    @Bean
    public TokenStore tokenStore() {
        //JWT令牌存储方案     不需要存储access_token,所有信息都存储在jwt里，本质不做存储，返回的token变长了
        return new JwtTokenStore(accessTokenConverter());
    }

    @Bean
    public JwtAccessTokenConverter accessTokenConverter() {
        //通过这个实现用户信息和jwt的转换
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        converter.setSigningKey(SIGNING_KEY); //对称秘钥，资源服务器使用该秘钥来验证
        return converter;
    }

}
